/**
 *
 */
package com.iapcursos.portal.procefet.modelo.beans.entitys;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

/**
 * @author Gleison
 *
 */
@NamedQueries({
	@NamedQuery(name="allTurmas", query="select t from Turma t")
})
@Entity
@Table(name = "TURMAS")
public class Turma implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int id;
	private String nome;
	@ManyToOne()
	@JoinColumn(name = "ID_UNIDADE")
	private Unidade unidade;
	@ManyToMany(cascade = CascadeType.ALL, fetch=FetchType.EAGER)
	private List<Horario> horarios = new ArrayList<Horario>();
	@ManyToMany(cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH},
		fetch=FetchType.EAGER)	
	private List<Pessoa> alunos;



	public List<Horario> getHorarios() {
		return horarios;
	}
	/**
	 *
	 */
	public Turma() {
		this.alunos = new ArrayList<Pessoa>();
	}
	/**
	 * @return the nome
	 */
	public String getNome() {
		return nome;
	}
	/**
	 * @param nome the nome to set
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}

	/**
	 * @return the unidade
	 */
	public Unidade getUnidade() {
		return unidade;
	}
	/**
	 * @param unidade the unidade to set
	 */
	public void setUnidade(Unidade unidade) {
		this.unidade = unidade;
	}
	/**
	 * @return the id
	 */
	public int getId() {
		return id;
	}
	public List<Pessoa> getAlunos() {
		return alunos;
	}
	public void setAlunos(List<Pessoa> alunos) {
		this.alunos = alunos;
	}
	
	public void addAluno(Pessoa aluno){
		if(this.alunos == null){
			this.alunos = new ArrayList<Pessoa>();
		}
		this.alunos.add(aluno);
	}
}
